<?php
/**
 * класс для работы с таблицей категорий пользователей
 *
 * @author kingop
 */
class DatabaseObject_UsersCats extends DatabaseObject {
    
    public function __construct($db) {
        parent::__construct($db, 'users_cats', 'id');
        
        // далее перечислим все поля таблицы
        $this->add('idUser');
        $this->add('idCat');
    }
    
    public static function GetUserCategories($db, $id) {
        // инициализируем настройки
        $defaults = array(
            'offset' => 0,
            'limit' => 0,
            'order' => 'c.id'
        );
           $options = array();
        foreach ($defaults as $k => $v) {
            $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
        }

        $select = self::_GetBaseQuery($db, $options);

        // поля для выборки
        $select->from(null, 'c.*');

        // зададим настройки
        if ($options['limit'] > 0)
            $select->limit($options['limit'], $options['offset']);
        
                                                                                                                                                                                                                                                                                                                                                             
        $select->where('idUser = ?', $id);
        $select->order($options['order']);

        // получим данные из базы
        $data = $db->fetchAll($select);

        // сделаем из полученных записей объекты класса
        $cats = self::BuildMultiple($db, __CLASS__, $data);
        $cat_ids = array_keys($cats);

        if (count($cat_ids) == 0)
            return array();

        return $cats;
    }
    
    public static function DeleteUserCats($db, $id) {
        $query = sprintf("delete from %s where idUser = %d", 'users_cats', $id);
        
        $db->query($query);
        
        return true;
    }
    
    private static function _GetBaseQuery($db, $options) {
        // инициализация настроек
        $defaults = array();

        foreach ($defaults as $k => $v) {
            $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
        }

        // создание запроса на получение
        $select = $db->select();
        $select->from(array('c' => 'users_cats'), array());

        return $select;
    }
    
    public static function GetUsersIdsByCat($db, $idCat) {
        $select = self::_GetBaseQuery($db, $options);

        // поля для выборки
        $select->from(null, 'c.*');        
        $select->where('idCat = ?', $idCat);        
        $data = $db->fetchAll($select);
        
        $res = self::BuildMultiple($db, __CLASS__, $data);
        
        $uIds = "";
        
        foreach ($res as $item) {
            $uIds .= $item->idUser . ", ";
        }
        
        $uIds = substr($uIds, 0, strlen($uIds) - 2);
        
        return $uIds;
    }
}

?>
